home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue45 / Message / MessageDict.pas next >
Encoding:
Pascal/Delphi Source File  |  2000-11-02  |  20.5 KB  |  530 lines

  1. unit MessageDict;
  2.  
  3. interface
  4.  
  5. uses
  6.   Messages, Controls, Classes, SysUtils;
  7.  
  8. type
  9.  
  10.   EMessageDictError = class(Exception);
  11.   TMessageName = String[24];
  12.   TMessageDict = class(TObject)
  13.   private
  14.     MsgList:    TList;
  15.     NameList:   TStringList;
  16.     procedure InitializeDict;
  17.   public
  18.     constructor Create;
  19.     destructor Destroy; override;
  20.     function MessageName(Number: Cardinal): TMessageName;
  21.   end;
  22.  
  23. implementation
  24.  
  25. constructor TMessageDict.Create;
  26. begin
  27.   inherited Create;
  28.   MsgList := TList.Create;
  29.   MsgList.Capacity := 435;
  30.   NameList := TStringList.Create;
  31.   NameList.Capacity := 435;
  32.   InitializeDict;
  33. end;
  34.  
  35. destructor TMessageDict.Destroy;
  36. begin
  37.   MsgList.Free;
  38.   NameList.Free;
  39.   inherited Destroy;
  40. end;
  41.  
  42. function TMessageDict.MessageName(Number: Cardinal): TMessageName;
  43. var
  44.   L: Integer;
  45.   H: Integer;
  46.   I: Integer;
  47.   C: Integer;
  48.   Found: Boolean;
  49. begin
  50.   Found := False;
  51.   L := 0;
  52.   H := MsgList.Count - 1;
  53.   while L <= H do
  54.   begin
  55.     I := (L + H) shr 1;
  56.     C := LongRec(MsgList[I]).Hi - Number;
  57.     if C < 0 then
  58.       L := I + 1
  59.     else
  60.     begin
  61.       H := I - 1;
  62.       if C = 0 then
  63.         Found := True;
  64.     end;
  65.   end;
  66.   if Found then
  67.     Result := NameList[LongRec(MsgList[L]).Lo]
  68.   else
  69.     Result := '$' + IntToHex(Number, 8) + StringOfChar(' ', 11);
  70. end;
  71.  
  72. function SortMsgListProc(Item1: Pointer; Item2: Pointer): Integer;
  73. begin
  74.   Result := LongRec(Item1).Hi - LongRec(Item2).Hi;
  75. end;
  76.  
  77. procedure TMessageDict.InitializeDict;
  78. var
  79.   I:  Integer;
  80.  
  81.   procedure AddMsg(const Name: String; Number: Word);
  82.   var
  83.     L:    LongRec;
  84.   begin
  85.     Inc(I);
  86.     L.Hi := Number;
  87.     L.Lo := I;
  88.     MsgList.Add(Pointer(L));
  89.     NameList.Add(Name);
  90.   end;
  91.  
  92. begin
  93.   I := -1;
  94.   AddMsg('WM_NULL             ', $0000);
  95.   AddMsg('WM_CREATE           ', $0001);
  96.   AddMsg('WM_DESTROY          ', $0002);
  97.   AddMsg('WM_MOVE             ', $0003);
  98.   AddMsg('WM_SIZE             ', $0005);
  99.   AddMsg('WM_ACTIVATE         ', $0006);
  100.   AddMsg('WM_SETFOCUS         ', $0007);
  101.   AddMsg('WM_KILLFOCUS        ', $0008);
  102.   AddMsg('WM_ENABLE           ', $000A);
  103.   AddMsg('WM_SETREDRAW        ', $000B);
  104.   AddMsg('WM_SETTEXT          ', $000C);
  105.   AddMsg('WM_GETTEXT          ', $000D);
  106.   AddMsg('WM_GETTEXTLENGTH    ', $000E);
  107.   AddMsg('WM_PAINT            ', $000F);
  108.   AddMsg('WM_CLOSE            ', $0010);
  109.   AddMsg('WM_QUERYENDSESSION  ', $0011);
  110.   AddMsg('WM_QUIT             ', $0012);
  111.   AddMsg('WM_QUERYOPEN        ', $0013);
  112.   AddMsg('WM_ERASEBKGND       ', $0014);
  113.   AddMsg('WM_SYSCOLORCHANGE   ', $0015);
  114.   AddMsg('WM_ENDSESSION       ', $0016);
  115.   AddMsg('WM_SYSTEMERROR      ', $0017);
  116.   AddMsg('WM_SHOWWINDOW       ', $0018);
  117.   AddMsg('WM_CTLCOLOR         ', $0019);
  118.   AddMsg('WM_SETTINGCHANGE    ', $001A);
  119.   AddMsg('WM_DEVMODECHANGE    ', $001B);
  120.   AddMsg('WM_ACTIVATEAPP      ', $001C);
  121.   AddMsg('WM_FONTCHANGE       ', $001D);
  122.   AddMsg('WM_TIMECHANGE       ', $001E);
  123.   AddMsg('WM_CANCELMODE       ', $001F);
  124.   AddMsg('WM_SETCURSOR        ', $0020);
  125.   AddMsg('WM_MOUSEACTIVATE    ', $0021);
  126.   AddMsg('WM_CHILDACTIVATE    ', $0022);
  127.   AddMsg('WM_QUEUESYNC        ', $0023);
  128.   AddMsg('WM_GETMINMAXINFO    ', $0024);
  129.   AddMsg('WM_PAINTICON        ', $0026);
  130.   AddMsg('WM_ICONERASEBKGND   ', $0027);
  131.   AddMsg('WM_NEXTDLGCTL       ', $0028);
  132.   AddMsg('WM_SPOOLERSTATUS    ', $002A);
  133.   AddMsg('WM_DRAWITEM         ', $002B);
  134.   AddMsg('WM_MEASUREITEM      ', $002C);
  135.   AddMsg('WM_DELETEITEM       ', $002D);
  136.   AddMsg('WM_VKEYTOITEM       ', $002E);
  137.   AddMsg('WM_CHARTOITEM       ', $002F);
  138.   AddMsg('WM_SETFONT          ', $0030);
  139.   AddMsg('WM_GETFONT          ', $0031);
  140.   AddMsg('WM_SETHOTKEY        ', $0032);
  141.   AddMsg('WM_GETHOTKEY        ', $0033);
  142.   AddMsg('WM_QUERYDRAGICON    ', $0037);
  143.   AddMsg('WM_COMPAREITEM      ', $0039);
  144.   AddMsg('WM_GETOBJECT        ', $003D);
  145.   AddMsg('WM_COMPACTING       ', $0041);
  146.   AddMsg('WM_WINDOWPOSCHANGING ', $0046);
  147.   AddMsg('WM_WINDOWPOSCHANGED ', $0047);
  148.   AddMsg('WM_POWER            ', $0048);
  149.   AddMsg('WM_COPYDATA         ', $004A);
  150.   AddMsg('WM_CANCELJOURNAL    ', $004B);
  151.   AddMsg('WM_NOTIFY           ', $004E);
  152.   AddMsg('WM_INPUTLANGCHANGEREQUEST ', $0050);
  153.   AddMsg('WM_INPUTLANGCHANGE  ', $0051);
  154.   AddMsg('WM_TCARD            ', $0052);
  155.   AddMsg('WM_HELP             ', $0053);
  156.   AddMsg('WM_USERCHANGED      ', $0054);
  157.   AddMsg('WM_NOTIFYFORMAT     ', $0055);
  158.   AddMsg('WM_CONTEXTMENU      ', $007B);
  159.   AddMsg('WM_STYLECHANGING    ', $007C);
  160.   AddMsg('WM_STYLECHANGED     ', $007D);
  161.   AddMsg('WM_DISPLAYCHANGE    ', $007E);
  162.   AddMsg('WM_GETICON          ', $007F);
  163.   AddMsg('WM_SETICON          ', $0080);
  164.   AddMsg('WM_NCCREATE         ', $0081);
  165.   AddMsg('WM_NCDESTROY        ', $0082);
  166.   AddMsg('WM_NCCALCSIZE       ', $0083);
  167.   AddMsg('WM_NCHITTEST        ', $0084);
  168.   AddMsg('WM_NCPAINT          ', $0085);
  169.   AddMsg('WM_NCACTIVATE       ', $0086);
  170.   AddMsg('WM_GETDLGCODE       ', $0087);
  171.   AddMsg('WM_NCMOUSEMOVE      ', $00A0);
  172.   AddMsg('WM_NCLBUTTONDOWN    ', $00A1);
  173.   AddMsg('WM_NCLBUTTONUP      ', $00A2);
  174.   AddMsg('WM_NCLBUTTONDBLCLK  ', $00A3);
  175.   AddMsg('WM_NCRBUTTONDOWN    ', $00A4);
  176.   AddMsg('WM_NCRBUTTONUP      ', $00A5);
  177.   AddMsg('WM_NCRBUTTONDBLCLK  ', $00A6);
  178.   AddMsg('WM_NCMBUTTONDOWN    ', $00A7);
  179.   AddMsg('WM_NCMBUTTONUP      ', $00A8);
  180.   AddMsg('WM_NCMBUTTONDBLCLK  ', $00A9);
  181.   AddMsg('WM_KEYDOWN          ', $0100);
  182.   AddMsg('WM_KEYUP            ', $0101);
  183.   AddMsg('WM_CHAR             ', $0102);
  184.   AddMsg('WM_DEADCHAR         ', $0103);
  185.   AddMsg('WM_SYSKEYDOWN       ', $0104);
  186.   AddMsg('WM_SYSKEYUP         ', $0105);
  187.   AddMsg('WM_SYSCHAR          ', $0106);
  188.   AddMsg('WM_SYSDEADCHAR      ', $0107);
  189.   AddMsg('WM_INITDIALOG       ', $0110);
  190.   AddMsg('WM_COMMAND          ', $0111);
  191.   AddMsg('WM_SYSCOMMAND       ', $0112);
  192.   AddMsg('WM_TIMER            ', $0113);
  193.   AddMsg('WM_HSCROLL          ', $0114);
  194.   AddMsg('WM_VSCROLL          ', $0115);
  195.   AddMsg('WM_INITMENU         ', $0116);
  196.   AddMsg('WM_INITMENUPOPUP    ', $0117);
  197.   AddMsg('WM_MENUSELECT       ', $011F);
  198.   AddMsg('WM_MENUCHAR         ', $0120);
  199.   AddMsg('WM_ENTERIDLE        ', $0121);
  200.   AddMsg('WM_MENURBUTTONUP    ', $0122);
  201.   AddMsg('WM_MENUDRAG         ', $0123);
  202.   AddMsg('WM_MENUGETOBJECT    ', $0124);
  203.   AddMsg('WM_UNINITMENUPOPUP  ', $0125);
  204.   AddMsg('WM_MENUCOMMAND      ', $0126);
  205.   AddMsg('WM_CTLCOLORMSGBOX   ', $0132);
  206.   AddMsg('WM_CTLCOLOREDIT     ', $0133);
  207.   AddMsg('WM_CTLCOLORLISTBOX  ', $0134);
  208.   AddMsg('WM_CTLCOLORBTN      ', $0135);
  209.   AddMsg('WM_CTLCOLORDLG      ', $0136);
  210.   AddMsg('WM_CTLCOLORSCROLLBAR', $0137);
  211.   AddMsg('WM_CTLCOLORSTATIC   ', $0138);
  212.   AddMsg('WM_MOUSEMOVE        ', $0200);
  213.   AddMsg('WM_LBUTTONDOWN      ', $0201);
  214.   AddMsg('WM_LBUTTONUP        ', $0202);
  215.   AddMsg('WM_LBUTTONDBLCLK    ', $0203);
  216.   AddMsg('WM_RBUTTONDOWN      ', $0204);
  217.   AddMsg('WM_RBUTTONUP        ', $0205);
  218.   AddMsg('WM_RBUTTONDBLCLK    ', $0206);
  219.   AddMsg('WM_MBUTTONDOWN      ', $0207);
  220.   AddMsg('WM_MBUTTONUP        ', $0208);
  221.   AddMsg('WM_MBUTTONDBLCLK    ', $0209);
  222.   AddMsg('WM_MOUSEWHEEL       ', $020A);
  223.   AddMsg('WM_PARENTNOTIFY     ', $0210);
  224.   AddMsg('WM_ENTERMENULOOP    ', $0211);
  225.   AddMsg('WM_EXITMENULOOP     ', $0212);
  226.   AddMsg('WM_NEXTMENU         ', $0213);
  227.   AddMsg('WM_SIZING           ', 532);
  228.   AddMsg('WM_CAPTURECHANGED   ', 533);
  229.   AddMsg('WM_MOVING           ', 534);
  230.   AddMsg('WM_POWERBROADCAST   ', 536);
  231.   AddMsg('WM_DEVICECHANGE     ', 537);
  232.   AddMsg('WM_IME_STARTCOMPOSITION ', $010D);
  233.   AddMsg('WM_IME_ENDCOMPOSITION ', $010E);
  234.   AddMsg('WM_IME_COMPOSITION  ', $010F);
  235.   AddMsg('WM_IME_SETCONTEXT   ', $0281);
  236.   AddMsg('WM_IME_NOTIFY       ', $0282);
  237.   AddMsg('WM_IME_CONTROL      ', $0283);
  238.   AddMsg('WM_IME_COMPOSITIONFULL ', $0284);
  239.   AddMsg('WM_IME_SELECT       ', $0285);
  240.   AddMsg('WM_IME_CHAR         ', $0286);
  241.   AddMsg('WM_IME_REQUEST      ', $0288);
  242.   AddMsg('WM_IME_KEYDOWN      ', $0290);
  243.   AddMsg('WM_IME_KEYUP        ', $0291);
  244.   AddMsg('WM_MDICREATE        ', $0220);
  245.   AddMsg('WM_MDIDESTROY       ', $0221);
  246.   AddMsg('WM_MDIACTIVATE      ', $0222);
  247.   AddMsg('WM_MDIRESTORE       ', $0223);
  248.   AddMsg('WM_MDINEXT          ', $0224);
  249.   AddMsg('WM_MDIMAXIMIZE      ', $0225);
  250.   AddMsg('WM_MDITILE          ', $0226);
  251.   AddMsg('WM_MDICASCADE       ', $0227);
  252.   AddMsg('WM_MDIICONARRANGE   ', $0228);
  253.   AddMsg('WM_MDIGETACTIVE     ', $0229);
  254.   AddMsg('WM_MDISETMENU       ', $0230);
  255.   AddMsg('WM_ENTERSIZEMOVE    ', $0231);
  256.   AddMsg('WM_EXITSIZEMOVE     ', $0232);
  257.   AddMsg('WM_DROPFILES        ', $0233);
  258.   AddMsg('WM_MDIREFRESHMENU   ', $0234);
  259.   AddMsg('WM_MOUSEHOVER       ', $02A1);
  260.   AddMsg('WM_MOUSELEAVE       ', $02A3);
  261.   AddMsg('WM_CUT              ', $0300);
  262.   AddMsg('WM_COPY             ', $0301);
  263.   AddMsg('WM_PASTE            ', $0302);
  264.   AddMsg('WM_CLEAR            ', $0303);
  265.   AddMsg('WM_UNDO             ', $0304);
  266.   AddMsg('WM_RENDERFORMAT     ', $0305);
  267.   AddMsg('WM_RENDERALLFORMATS ', $0306);
  268.   AddMsg('WM_DESTROYCLIPBOARD ', $0307);
  269.   AddMsg('WM_DRAWCLIPBOARD    ', $0308);
  270.   AddMsg('WM_PAINTCLIPBOARD   ', $0309);
  271.   AddMsg('WM_VSCROLLCLIPBOARD ', $030A);
  272.   AddMsg('WM_SIZECLIPBOARD    ', $030B);
  273.   AddMsg('WM_ASKCBFORMATNAME  ', $030C);
  274.   AddMsg('WM_CHANGECBCHAIN    ', $030D);
  275.   AddMsg('WM_HSCROLLCLIPBOARD ', $030E);
  276.   AddMsg('WM_QUERYNEWPALETTE  ', $030F);
  277.   AddMsg('WM_PALETTEISCHANGING', $0310);
  278.   AddMsg('WM_PALETTECHANGED   ', $0311);
  279.   AddMsg('WM_HOTKEY           ', $0312);
  280.   AddMsg('WM_PRINT            ', 791);
  281.   AddMsg('WM_PRINTCLIENT      ', 792);
  282.   AddMsg('WM_HANDHELDFIRST    ', 856);
  283.   AddMsg('WM_HANDHELDLAST     ', 863);
  284.   AddMsg('WM_PENWINFIRST      ', $0380);
  285.   AddMsg('WM_PENWINLAST       ', $038F);
  286.   AddMsg('WM_COALESCE_FIRST   ', $0390);
  287.   AddMsg('WM_COALESCE_LAST    ', $039F);
  288.   AddMsg('WM_DDE_INITIATE     ', WM_DDE_FIRST + 0);
  289.   AddMsg('WM_DDE_TERMINATE    ', WM_DDE_FIRST + 1);
  290.   AddMsg('WM_DDE_ADVISE       ', WM_DDE_FIRST + 2);
  291.   AddMsg('WM_DDE_UNADVISE     ', WM_DDE_FIRST + 3);
  292.   AddMsg('WM_DDE_ACK          ', WM_DDE_FIRST + 4);
  293.   AddMsg('WM_DDE_DATA         ', WM_DDE_FIRST + 5);
  294.   AddMsg('WM_DDE_REQUEST      ', WM_DDE_FIRST + 6);
  295.   AddMsg('WM_DDE_POKE         ', WM_DDE_FIRST + 7);
  296.   AddMsg('WM_DDE_EXECUTE      ', WM_DDE_FIRST + 8);
  297.   AddMsg('WM_APP              ', $8000);
  298.   AddMsg('WM_USER             ', $0400);
  299.   AddMsg('BM_GETCHECK         ', $00F0);
  300.   AddMsg('BM_SETCHECK         ', $00F1);
  301.   AddMsg('BM_GETSTATE         ', $00F2);
  302.   AddMsg('BM_SETSTATE         ', $00F3);
  303.   AddMsg('BM_SETSTYLE         ', $00F4);
  304.   AddMsg('BM_CLICK            ', $00F5);
  305.   AddMsg('BM_GETIMAGE         ', $00F6);
  306.   AddMsg('BM_SETIMAGE         ', $00F7);
  307.   AddMsg('LB_ADDSTRING        ', $0180);
  308.   AddMsg('LB_INSERTSTRING     ', $0181);
  309.   AddMsg('LB_DELETESTRING     ', $0182);
  310.   AddMsg('LB_SELITEMRANGEEX   ', $0183);
  311.   AddMsg('LB_RESETCONTENT     ', $0184);
  312.   AddMsg('LB_SETSEL           ', $0185);
  313.   AddMsg('LB_SETCURSEL        ', $0186);
  314.   AddMsg('LB_GETSEL           ', $0187);
  315.   AddMsg('LB_GETCURSEL        ', $0188);
  316.   AddMsg('LB_GETTEXT          ', $0189);
  317.   AddMsg('LB_GETTEXTLEN       ', $018A);
  318.   AddMsg('LB_GETCOUNT         ', $018B);
  319.   AddMsg('LB_SELECTSTRING     ', $018C);
  320.   AddMsg('LB_DIR              ', $018D);
  321.   AddMsg('LB_GETTOPINDEX      ', $018E);
  322.   AddMsg('LB_FINDSTRING       ', $018F);
  323.   AddMsg('LB_GETSELCOUNT      ', $0190);
  324.   AddMsg('LB_GETSELITEMS      ', $0191);
  325.   AddMsg('LB_SETTABSTOPS      ', $0192);
  326.   AddMsg('LB_GETHORIZONTALEXTENT ', $0193);
  327.   AddMsg('LB_SETHORIZONTALEXTENT ', $0194);
  328.   AddMsg('LB_SETCOLUMNWIDTH   ', $0195);
  329.   AddMsg('LB_ADDFILE          ', $0196);
  330.   AddMsg('LB_SETTOPINDEX      ', $0197);
  331.   AddMsg('LB_GETITEMRECT      ', $0198);
  332.   AddMsg('LB_GETITEMDATA      ', $0199);
  333.   AddMsg('LB_SETITEMDATA      ', $019A);
  334.   AddMsg('LB_SELITEMRANGE     ', $019B);
  335.   AddMsg('LB_SETANCHORINDEX   ', $019C);
  336.   AddMsg('LB_GETANCHORINDEX   ', $019D);
  337.   AddMsg('LB_SETCARETINDEX    ', $019E);
  338.   AddMsg('LB_GETCARETINDEX    ', $019F);
  339.   AddMsg('LB_SETITEMHEIGHT    ', $01A0);
  340.   AddMsg('LB_GETITEMHEIGHT    ', $01A1);
  341.   AddMsg('LB_FINDSTRINGEXACT  ', $01A2);
  342.   AddMsg('LB_SETLOCALE        ', $01A5);
  343.   AddMsg('LB_GETLOCALE        ', $01A6);
  344.   AddMsg('LB_SETCOUNT         ', $01A7);
  345.   AddMsg('LB_INITSTORAGE      ', $01A8);
  346.   AddMsg('LB_ITEMFROMPOINT    ', $01A9);
  347.   AddMsg('LB_MSGMAX           ', 432);
  348.   AddMsg('CB_GETEDITSEL       ', $0140);
  349.   AddMsg('CB_LIMITTEXT        ', $0141);
  350.   AddMsg('CB_SETEDITSEL       ', $0142);
  351.   AddMsg('CB_ADDSTRING        ', $0143);
  352.   AddMsg('CB_DELETESTRING     ', $0144);
  353.   AddMsg('CB_DIR              ', $0145);
  354.   AddMsg('CB_GETCOUNT         ', $0146);
  355.   AddMsg('CB_GETCURSEL        ', $0147);
  356.   AddMsg('CB_GETLBTEXT        ', $0148);
  357.   AddMsg('CB_GETLBTEXTLEN     ', $0149);
  358.   AddMsg('CB_INSERTSTRING     ', $014A);
  359.   AddMsg('CB_RESETCONTENT     ', $014B);
  360.   AddMsg('CB_FINDSTRING       ', $014C);
  361.   AddMsg('CB_SELECTSTRING     ', $014D);
  362.   AddMsg('CB_SETCURSEL        ', $014E);
  363.   AddMsg('CB_SHOWDROPDOWN     ', $014F);
  364.   AddMsg('CB_GETITEMDATA      ', $0150);
  365.   AddMsg('CB_SETITEMDATA      ', $0151);
  366.   AddMsg('CB_GETDROPPEDCONTROLRECT ', $0152);
  367.   AddMsg('CB_SETITEMHEIGHT    ', $0153);
  368.   AddMsg('CB_GETITEMHEIGHT    ', $0154);
  369.   AddMsg('CB_SETEXTENDEDUI    ', $0155);
  370.   AddMsg('CB_GETEXTENDEDUI    ', $0156);
  371.   AddMsg('CB_GETDROPPEDSTATE  ', $0157);
  372.   AddMsg('CB_FINDSTRINGEXACT  ', $0158);
  373.   AddMsg('CB_SETLOCALE        ', 345);
  374.   AddMsg('CB_GETLOCALE        ', 346);
  375.   AddMsg('CB_GETTOPINDEX      ', 347);
  376.   AddMsg('CB_SETTOPINDEX      ', 348);
  377.   AddMsg('CB_GETHORIZONTALEXTENT ', 349);
  378.   AddMsg('CB_SETHORIZONTALEXTENT ', 350);
  379.   AddMsg('CB_GETDROPPEDWIDTH  ', 351);
  380.   AddMsg('CB_SETDROPPEDWIDTH  ', 352);
  381.   AddMsg('CB_INITSTORAGE      ', 353);
  382.   AddMsg('CB_MSGMAX           ', 354);
  383.   AddMsg('EM_GETSEL           ', $00B0);
  384.   AddMsg('EM_SETSEL           ', $00B1);
  385.   AddMsg('EM_GETRECT          ', $00B2);
  386.   AddMsg('EM_SETRECT          ', $00B3);
  387.   AddMsg('EM_SETRECTNP        ', $00B4);
  388.   AddMsg('EM_SCROLL           ', $00B5);
  389.   AddMsg('EM_LINESCROLL       ', $00B6);
  390.   AddMsg('EM_SCROLLCARET      ', $00B7);
  391.   AddMsg('EM_GETMODIFY        ', $00B8);
  392.   AddMsg('EM_SETMODIFY        ', $00B9);
  393.   AddMsg('EM_GETLINECOUNT     ', $00BA);
  394.   AddMsg('EM_LINEINDEX        ', $00BB);
  395.   AddMsg('EM_SETHANDLE        ', $00BC);
  396.   AddMsg('EM_GETHANDLE        ', $00BD);
  397.   AddMsg('EM_GETTHUMB         ', $00BE);
  398.   AddMsg('EM_LINELENGTH       ', $00C1);
  399.   AddMsg('EM_REPLACESEL       ', $00C2);
  400.   AddMsg('EM_GETLINE          ', $00C4);
  401.   AddMsg('EM_LIMITTEXT        ', $00C5);
  402.   AddMsg('EM_CANUNDO          ', $00C6);
  403.   AddMsg('EM_UNDO             ', $00C7);
  404.   AddMsg('EM_FMTLINES         ', $00C8);
  405.   AddMsg('EM_LINEFROMCHAR     ', $00C9);
  406.   AddMsg('EM_SETTABSTOPS      ', $00CB);
  407.   AddMsg('EM_SETPASSWORDCHAR  ', $00CC);
  408.   AddMsg('EM_EMPTYUNDOBUFFER  ', $00CD);
  409.   AddMsg('EM_GETFIRSTVISIBLELINE ', $00CE);
  410.   AddMsg('EM_SETREADONLY      ', $00CF);
  411.   AddMsg('EM_SETWORDBREAKPROC ', $00D0);
  412.   AddMsg('EM_GETWORDBREAKPROC ', $00D1);
  413.   AddMsg('EM_GETPASSWORDCHAR  ', $00D2);
  414.   AddMsg('EM_SETMARGINS       ', 211);
  415.   AddMsg('EM_GETMARGINS       ', 212);
  416.   AddMsg('EM_GETLIMITTEXT     ', 213);
  417.   AddMsg('EM_POSFROMCHAR      ', 214);
  418.   AddMsg('EM_CHARFROMPOS      ', 215);
  419.   AddMsg('EM_SETIMESTATUS     ', 216);
  420.   AddMsg('EM_GETIMESTATUS     ', 217);
  421.   AddMsg('SBM_SETPOS          ', 224);
  422.   AddMsg('SBM_GETPOS          ', 225);
  423.   AddMsg('SBM_SETRANGE        ', 226);
  424.   AddMsg('SBM_SETRANGEREDRAW  ', 230);
  425.   AddMsg('SBM_GETRANGE        ', 227);
  426.   AddMsg('SBM_ENABLE_ARROWS   ', 228);
  427.   AddMsg('SBM_SETSCROLLINFO   ', 233);
  428.   AddMsg('SBM_GETSCROLLINFO   ', 234);
  429.   AddMsg('CM_ACTIVATE         ', CM_BASE + 0);
  430.   AddMsg('CM_DEACTIVATE       ', CM_BASE + 1);
  431.   AddMsg('CM_GOTFOCUS         ', CM_BASE + 2);
  432.   AddMsg('CM_LOSTFOCUS        ', CM_BASE + 3);
  433.   AddMsg('CM_CANCELMODE       ', CM_BASE + 4);
  434.   AddMsg('CM_DIALOGKEY        ', CM_BASE + 5);
  435.   AddMsg('CM_DIALOGCHAR       ', CM_BASE + 6);
  436.   AddMsg('CM_FOCUSCHANGED     ', CM_BASE + 7);
  437.   AddMsg('CM_PARENTFONTCHANGED ', CM_BASE + 8);
  438.   AddMsg('CM_PARENTCOLORCHANGED ', CM_BASE + 9);
  439.   AddMsg('CM_HITTEST          ', CM_BASE + 10);
  440.   AddMsg('CM_VISIBLECHANGED   ', CM_BASE + 11);
  441.   AddMsg('CM_ENABLEDCHANGED   ', CM_BASE + 12);
  442.   AddMsg('CM_COLORCHANGED     ', CM_BASE + 13);
  443.   AddMsg('CM_FONTCHANGED      ', CM_BASE + 14);
  444.   AddMsg('CM_CURSORCHANGED    ', CM_BASE + 15);
  445.   AddMsg('CM_CTL3DCHANGED     ', CM_BASE + 16);
  446.   AddMsg('CM_PARENTCTL3DCHANGED ', CM_BASE + 17);
  447.   AddMsg('CM_TEXTCHANGED      ', CM_BASE + 18);
  448.   AddMsg('CM_MOUSEENTER       ', CM_BASE + 19);
  449.   AddMsg('CM_MOUSELEAVE       ', CM_BASE + 20);
  450.   AddMsg('CM_MENUCHANGED      ', CM_BASE + 21);
  451.   AddMsg('CM_APPKEYDOWN       ', CM_BASE + 22);
  452.   AddMsg('CM_APPSYSCOMMAND    ', CM_BASE + 23);
  453.   AddMsg('CM_BUTTONPRESSED    ', CM_BASE + 24);
  454.   AddMsg('CM_SHOWINGCHANGED   ', CM_BASE + 25);
  455.   AddMsg('CM_ENTER            ', CM_BASE + 26);
  456.   AddMsg('CM_EXIT             ', CM_BASE + 27);
  457.   AddMsg('CM_DESIGNHITTEST    ', CM_BASE + 28);
  458.   AddMsg('CM_ICONCHANGED      ', CM_BASE + 29);
  459.   AddMsg('CM_WANTSPECIALKEY   ', CM_BASE + 30);
  460.   AddMsg('CM_INVOKEHELP       ', CM_BASE + 31);
  461.   AddMsg('CM_WINDOWHOOK       ', CM_BASE + 32);
  462.   AddMsg('CM_RELEASE          ', CM_BASE + 33);
  463.   AddMsg('CM_SHOWHINTCHANGED  ', CM_BASE + 34);
  464.   AddMsg('CM_PARENTSHOWHINTCHANGED ', CM_BASE + 35);
  465.   AddMsg('CM_SYSCOLORCHANGE   ', CM_BASE + 36);
  466.   AddMsg('CM_WININICHANGE     ', CM_BASE + 37);
  467.   AddMsg('CM_FONTCHANGE       ', CM_BASE + 38);
  468.   AddMsg('CM_TIMECHANGE       ', CM_BASE + 39);
  469.   AddMsg('CM_TABSTOPCHANGED   ', CM_BASE + 40);
  470.   AddMsg('CM_UIACTIVATE       ', CM_BASE + 41);
  471.   AddMsg('CM_UIDEACTIVATE     ', CM_BASE + 42);
  472.   AddMsg('CM_DOCWINDOWACTIVATE ', CM_BASE + 43);
  473.   AddMsg('CM_CONTROLLISTCHANGE ', CM_BASE + 44);
  474.   AddMsg('CM_GETDATALINK      ', CM_BASE + 45);
  475.   AddMsg('CM_CHILDKEY         ', CM_BASE + 46);
  476.   AddMsg('CM_DRAG             ', CM_BASE + 47);
  477.   AddMsg('CM_HINTSHOW         ', CM_BASE + 48);
  478.   AddMsg('CM_DIALOGHANDLE     ', CM_BASE + 49);
  479.   AddMsg('CM_ISTOOLCONTROL    ', CM_BASE + 50);
  480.   AddMsg('CM_RECREATEWND      ', CM_BASE + 51);
  481.   AddMsg('CM_INVALIDATE       ', CM_BASE + 52);
  482.   AddMsg('CM_SYSFONTCHANGED   ', CM_BASE + 53);
  483.   AddMsg('CM_CONTROLCHANGE    ', CM_BASE + 54);
  484.   AddMsg('CM_CHANGED          ', CM_BASE + 55);
  485.   AddMsg('CM_DOCKCLIENT       ', CM_BASE + 56);
  486.   AddMsg('CM_UNDOCKCLIENT     ', CM_BASE + 57);
  487.   AddMsg('CM_FLOAT            ', CM_BASE + 58);
  488.   AddMsg('CM_BORDERCHANGED    ', CM_BASE + 59);
  489.   AddMsg('CM_BIDIMODECHANGED  ', CM_BASE + 60);
  490.   AddMsg('CM_PARENTBIDIMODECHANGED ', CM_BASE + 61);
  491.   AddMsg('CM_ALLCHILDRENFLIPPED ', CM_BASE + 62);
  492.   AddMsg('CM_ACTIONUPDATE     ', CM_BASE + 63);
  493.   AddMsg('CM_ACTIONEXECUTE    ', CM_BASE + 64);
  494.   AddMsg('CM_HINTSHOWPAUSE    ', CM_BASE + 65);
  495.   AddMsg('CM_DOCKNOTIFICATION ', CM_BASE + 66);
  496.   AddMsg('CM_MOUSEWHEEL       ', CM_BASE + 67);
  497.   AddMsg('CN_BASE             ', $BC00);
  498.   AddMsg('CN_CHARTOITEM       ', CN_BASE + WM_CHARTOITEM);
  499.   AddMsg('CN_COMMAND          ', CN_BASE + WM_COMMAND);
  500.   AddMsg('CN_COMPAREITEM      ', CN_BASE + WM_COMPAREITEM);
  501.   AddMsg('CN_CTLCOLORBTN      ', CN_BASE + WM_CTLCOLORBTN);
  502.   AddMsg('CN_CTLCOLORDLG      ', CN_BASE + WM_CTLCOLORDLG);
  503.   AddMsg('CN_CTLCOLOREDIT     ', CN_BASE + WM_CTLCOLOREDIT);
  504.   AddMsg('CN_CTLCOLORLISTBOX  ', CN_BASE + WM_CTLCOLORLISTBOX);
  505.   AddMsg('CN_CTLCOLORMSGBOX   ', CN_BASE + WM_CTLCOLORMSGBOX);
  506.   AddMsg('CN_CTLCOLORSCROLLBAR ', CN_BASE + WM_CTLCOLORSCROLLBAR);
  507.   AddMsg('CN_CTLCOLORSTATIC   ', CN_BASE + WM_CTLCOLORSTATIC);
  508.   AddMsg('CN_DELETEITEM       ', CN_BASE + WM_DELETEITEM);
  509.   AddMsg('CN_DRAWITEM         ', CN_BASE + WM_DRAWITEM);
  510.   AddMsg('CN_HSCROLL          ', CN_BASE + WM_HSCROLL);
  511.   AddMsg('CN_MEASUREITEM      ', CN_BASE + WM_MEASUREITEM);
  512.   AddMsg('CN_PARENTNOTIFY     ', CN_BASE + WM_PARENTNOTIFY);
  513.   AddMsg('CN_VKEYTOITEM       ', CN_BASE + WM_VKEYTOITEM);
  514.   AddMsg('CN_VSCROLL          ', CN_BASE + WM_VSCROLL);
  515.   AddMsg('CN_KEYDOWN          ', CN_BASE + WM_KEYDOWN);
  516.   AddMsg('CN_KEYUP            ', CN_BASE + WM_KEYUP);
  517.   AddMsg('CN_CHAR             ', CN_BASE + WM_CHAR);
  518.   AddMsg('CN_SYSKEYDOWN       ', CN_BASE + WM_SYSKEYDOWN);
  519.   AddMsg('CN_SYSCHAR          ', CN_BASE + WM_SYSCHAR);
  520.   AddMsg('CN_NOTIFY           ', CN_BASE + WM_NOTIFY);
  521.   MsgList.Sort(SortMsgListProc);
  522.   for I := 0 to MsgList.Count - 2 do
  523.     if LongRec(MsgList[I]).Hi = LongRec(MsgList[I + 1]).Hi then
  524.       raise EMessageDictError.Create(
  525.         'TMessageDict duplicate message number $' +
  526.           IntToHex(LongRec(MsgList[I]).Hi, 4));
  527. end;
  528.  
  529. end.
  530.